1. The Field of the Invention
The present invention relates to increasing the level of automation when establishing and managing network connections. More specifically, the present invention relates to systems, methods, and computer program products for abstracting connection information from a user so as to limit required user interaction when creating network connections.
2. Background and Relevant Art
Computer devices operating in a networked environment often have a variety of connection methods that may be used to connect to a variety of resources located on different networks. For instance, a computer may include a modem for establishing dial-up connections and a network interface card (“NIC”) for establishing Local Area Network (“LAN”) connections. For a computing device to establish a connection to a particular resource, the user of the computing device often needs a relatively high level of information about how to connect to the resource. The extent of information needed to connect to a resource may increase for portable computing devices that are moved between a variety of different physical locations.
To connect a computing device to a resource, a user of the computing device may often be required to know a network where the resource is located and a method for connecting to the network. For example, when a portable computing device requests access to the Internet, the user of the device may need to know that when, at home, the computing device uses a dial-up connection and, when at the office, the computing device uses a corporate LAN connection. When in the office, the corporate LAN connection may be preferred over the dial-up connection that may incur long distance charges or prevent others from using an associated telephone line. For the user of a computing device, it may be quite burdensome to reconfigure operations every time the portable computing device is moved between the home and the office or vice versa.
Additionally, conditions associated with a network may make establishment of a connection using a particular connection method undesirable at certain times. For example, if a network is experiencing heavy usage, bandwidth may be reduced. In other cases, a network may be experiencing a high degree of latency. A user may not be aware of network conditions and may unknowingly use a less desirable connection method to access a resource. It may also be that users are not aware of the costs associated with different types of connections and simply use the same connection because they are familiar with the connection. For example, when in his or her office, a user may establish a dial-up connection to connect to a corporate LAN, even if it is more expensive or will result in reduced data throughput, simply because he or she lacks the desire or technical expertise to establish a hardwired corporate LAN connection.
There may also be cases where multiple connection requests are made to a single connection method. This may occur in a device that receives multiple connection requests to create a dial-up connection, yet includes a single modem. For example, a request to dial-up to a corporate remote access services (“RAS”) server to synchronize corporate electronic mail may be received while a computing device is already connected to a user's Internet Service Provider (“ISP”) browsing stock quotes. Conventionally, the computing device would stay connected to the ISP because it does not have a way to determine which connection is more important. Likewise, if a user attempts to use a telephone line for a voice call, a user may need to cause a current data connection to disconnect before a voice call may be established. Similarly, there may be situations where, even though the hardware has the ability to connect to two different networks at the same time, it is impermissible to do so for security reasons. In such cases, a connection to a first network must be dropped before a connection to a second network may be established.
Other problems associated with connection methods also exist at the programming level. Most connection methods utilize different Application Program Interfaces (“APIs”) when establishing a connection. Even connection methods that use the same APIs often utilize the APIs in a different manner when establishing a connection. For example, a corporate LAN connection using Ethernet may utilize a completely different set of APIs than a dial-up connection that connects to a RAS server. Likewise, a dial-up connection to a RAS server that will establish a Virtual Private Network (“VPN”) connection may send different parameters to APIs than a standard connection to a RAS server. Requiring programmers to know the nuances of different connection methods may be time consuming and reduce their efficiency.
All of the above problems may be compounded in mobile devices, such as mobile phones or Personal Digital Assistants (“PDAs”), that connect to a relatively higher number of networks and use a variety of connection methods. For example, a PDA may connect to a home network using a first network card, a corporate network using a second network card, and connect via a wireless modem from other locations. As a result, users of the PDA may check their corporate electronic mail account using a variety of different connection methods. Each connection method may be associated with different configuration parameters, including phone numbers, network addresses, or authentication data, for proper operation of the connection. Thus, a user may need to have comprehensive knowledge of a number of connection methods to correctly establish a connection to check electronic mail.
Therefore, what is desired are systems, methods and computer program products for automating the establishment and management of various kinds of network connections in a manner that reduces the amount of information a user must know to establish a connection.